﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using LayerEntity.Caja;
using LayerEntity.Sistema;

namespace System2012.Ventas
{
    public partial class frmVisorVentasCreditos : DevExpress.XtraEditors.XtraForm
    {
        #region Varibles
        private string ID_CREDITO="";
        private string ID_SUCURSAL="";
        /// <summary>
        /// MONTO_ADELANTO ALMACEN EL EL IMPORTE QUE SE REALIZA POR ANTICIPO
        /// </summary>
        double MONTO_ADELANTO;
        /// <summary>
        /// @MONTO_AMORTIZA Almacen el monto de amortizacion que se envia en
        /// el textbox txtInicial
        /// </summary>
        double MONTO_AMORTIZA;
        /// <summary>
        /// MONTO_DEBE ALMACEN LO RESTANTE DEL MONTO INICAL QUE SE COBRA INTERESES  EN LA CASILLA DE 
        /// TEXTO txtTotDebe
        /// </summary>
        double MONTO_DEBE;
        /// <summary>
        /// MONTO_INICIAL  ES EL TOTAL DE LA INICAL QUE DA EL CLIENTE MONTO_INICIAL=MONTO_AMORTIZA+MONTO_DEBE
        /// </summary>
        double MONTO_INICIAL;
        /// <summary>
        /// TOTAL_VENTA  ALMACEN EL TOTAL DE LA FACTURACION SIN NINGUNA AMORTIZA O ANTICIPO
        /// </summary>
        double TOTAL_VENTA;
        /// <summary>
        /// TOTAL_CREDITO ALMACEN EL TOTAL QUE SE VA HA FINANCIAR EN CUOTAS 
        /// TOTAL_CREDITO=TOTAL_VENTA-MONTO_INICIAL-MONTO_ADELANTO
        /// </summary>
        double TOTAL_CREDITO;
        /// <summary>
        /// @IMPORTE QUE SE FECTUA AL MOMENTO DE EFECTUAR LA CANCELACION QUE SE ALMACEN 
        /// EN LA CASILLA txtImporteCobrar
        /// </summary>
        double IMPORTE_COBRAR;
        /// <summary>
        /// 
        /// </summary>
        GUtil util = new GUtil();
        /// <summary>
        /// FECHA DE INICAL FECHA DE FACTURACION
        /// </summary>
        DateTime FECHA_FAC;
        /// <summary>
        /// TABLA QUE ALMACENA TODO EL DETALLE DE LAS CUOTAS
        /// </summary>
      public  DataTable dtbCuota = new DataTable("Cuotas");
        /// <summary>
        /// TABLA QUE ALMACENA TODOS LOS PAGOS DE LAS CANCELACIONES
        /// </summary>
        DataTable dtbPagos = new DataTable("Pagos");
        /// <summary>
        /// @@IndexPag almacena el index de la grilla de pagos
        /// </summary>
        int IndexPag;
        /// <summary>
        /// opcion para la forma de pago en  Cancelaciones
        /// </summary>        
        int op_fp;
        /// <summary>
        ///  object getTipventa variable que almacen si es una venta al credito o es una venta al contado dependiendo
        ///  de la configuracion establecida
        /// </summary>
        object getTipventa;
        /// <summary>
        ///  public int opSave = 0;
        /// 0:Cancela la venta no se efectua ningun pago 
        /// 1:Graba la Venta Correctamente mediente el visor de pagos
        ///  
        /// </summary>
        public int opSave = 0;
        /// <summary>
        /// Almacen la cabcera de Creditos caso sea una venta la credito
        /// </summary>
        public ArrayList CabCreditos = new ArrayList();
        /// <summary>
        /// CabMov Almacen la Cabcera del Movimiento de Pago de Una venta con amortizacion
        /// </summary>
        public ArrayList CabMov = new ArrayList();
        /// <summary>
        /// IdDoc :tipo de Documento si la venta es al credido genera un documento de amortizacion par al movimiento
        /// de cada, si es una venta al contado ereda el mismo documento del comprobante de ventas
        /// </summary>
        int IdDoc;
        /// <summary>
        /// operecion de visor de creditos
        /// 0: venta al contado
        /// 1:venta al credito
        /// </summary>
        public int op_tip_venta;
        /// <summary>
        /// DataCli almacena los datos seleccionados del cliente
        /// </summary>
        ArrayList DataCli = new ArrayList();
        /// <summary>
        /// 1:cuando no se genera ningun anticipo en una venta ya sea al contado o al credito
        /// 2: cuando se genera un anticipo expuesto pór lo anterior
        /// </summary>
        public int op_anticipo;
        #endregion
        public frmVisorVentasCreditos()
        {
            this.InitializeComponent();
            
            this.CabeceraCuota();
            this.CabeceraPagos();
            this.RecControles(this);
            this.TOTAL_VENTA = double.Parse(this.txtTotal.Text);
            this.MONTO_ADELANTO = double.Parse(this.txtMontoAdelanto.Text);
            this.FECHA_FAC = DateTime.Parse(this.fecPago.Text);
            this.txtImpTotalVenta.Text = this.txtTotal.Text;
            if (!this.BGWTipDoc.IsBusy)
            {
                this.BGWTipDoc.RunWorkerAsync();
            }
            this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.getEeventos();
        }

        public frmVisorVentasCreditos(ArrayList data)
        {
            this.InitializeComponent();
            this.DataCli = data;

            this.CabeceraCuota();
            this.CabeceraPagos();
            this.RecControles(this);
            this.TOTAL_VENTA = double.Parse(data[1].ToString());// OPTENEMOS EL TOTAL DE LA VENTA FACTURADA
            IdDoc = int.Parse(data[4].ToString());
            this.FECHA_FAC = DateTime.Parse(this.fecPago.Text);
            this.getTipventa = data[0];//recuperamos el tipo de venta
            Console.Write("TIPO DE VENTA :" + getTipventa);
            if (int.Parse(this.getTipventa.ToString()) == 9)//venta al creito
            {
                op_tip_venta = 1;
                txtInicial.Focus();
                tabbedControlGroup1.SelectedTabPageIndex = 0;
                if (tabbedControlGroup1.SelectedTabPageIndex == 0)
                {
                    tabbedControlGroup1.SelectedTabPage.Items[0].Selected = true;

                    txtInicial.Focus();
    
                    Console.Write("cambio de foco2");
                }
               // tabbedControlGroup1.SelectedTabPage[0].Selected = true;
                
                // SI LA VENTA ES UN CREDITO TRABAJOS DESDE LA GENERACIONDE CUOTAS PARA
                //EL ESTADO FINANCIERO DE CREDITSO DE CTAS POR COBRAR DE LOS CLIENTES
                ctrlGrpCuotas.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                txtImpTotalVenta.Text = this.TOTAL_VENTA.ToString();//ALMACENAMOS EL TOTAL DE LA VENTA FACTURADA EN EL PANEL DE CANCELACIONES
                txtTotal.Text = this.TOTAL_VENTA.ToString();//POR MOTIVO DE UNA VENTA AL CREDITO TAMBIEN ALMACENAMOS EN EL TOTALIZADOS DEL PANEL DE CREDITOS
                TOTAL_CREDITO = TOTAL_VENTA;
            }
            else
            {
                op_tip_venta = 0;
                tabbedControlGroup1.SelectedTabPageIndex = 1;
                txtIdCaja.Focus();
                //TIPO DE VENTA 21
                // SI EL TIPO DE VENTAS ES UN CONTADO OCULTAMOS EL PANEL DEL SIMULADOR DE CREDITOS
                ctrlGrpCuotas.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                txtImpTotalVenta.Text = this.TOTAL_VENTA.ToString();//ALMACENAMOS EL TOTAL DE LA VENTA FACTURADA
                lblImporteCobrar.Text = this.TOTAL_VENTA.ToString();
                IMPORTE_COBRAR = TOTAL_VENTA;
            }
            
            if (!this.BGWTipDoc.IsBusy)
            {
                this.BGWTipDoc.RunWorkerAsync();
            }
            this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.getEeventos();
        }

        #region EVENTOS 
        private void txtSpin(object sender, DevExpress.XtraEditors.Controls.SpinEventArgs e)
        {
            e.Handled = true;
        }

        private void getEeventos()
        {
            this.txtInicial.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtTotal.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtMontoAdelanto.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtTotDebe.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtDias.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtCuotas.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtTasaInteres.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtIntervalo.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtSaldoInicial.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtCuotasPago.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtCuotas.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtImporteCobrar.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtImporteRecibido.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            //  this.txtCuotas.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
        }

        #endregion
        #region Cabeceras
        private void CabeceraCuota()
        {
            this.dtbCuota.Columns.Add(new DataColumn("Cuota", typeof(string)));//
            this.dtbCuota.Columns.Add(new DataColumn("Fecha", typeof(DateTime)));
            this.dtbCuota.Columns.Add(new DataColumn("Capital", typeof(decimal)));
            this.dtbCuota.Columns.Add(new DataColumn("Intereses", typeof(decimal)));
            this.dtbCuota.Columns.Add(new DataColumn("Total_Couta", typeof(decimal)));
            this.dtbCuota.Columns.Add(new DataColumn("Pagos", typeof(decimal)));
            this.dtbCuota.Columns.Add(new DataColumn("Saldo", typeof(decimal)));
            this.dtbCuota.Columns.Add(new DataColumn("Dias", typeof(double)));
        }

        private void CabeceraPagos()
        {
            this.dtbPagos.Columns.Add(new DataColumn("Form_pago", typeof(string)));//F/Pago
            this.dtbPagos.Columns.Add(new DataColumn("Banco", typeof(string)));
            this.dtbPagos.Columns.Add(new DataColumn("Tarjeta", typeof(string)));
            this.dtbPagos.Columns.Add(new DataColumn("Nro_Operación", typeof(string)));//Nro/Operación
            this.dtbPagos.Columns.Add(new DataColumn("M", typeof(string)));
            this.dtbPagos.Columns.Add(new DataColumn("Importe", typeof(decimal)));//Importe(S/ | $)
            this.dtbPagos.Columns.Add(new DataColumn("Imp_Recibido", typeof(decimal)));//Imp.Recibido(S/.| $ )
            this.dtbPagos.Columns.Add(new DataColumn("Equivale", typeof(double)));//Equivale(S/.)
            this.dtbPagos.Columns.Add(new DataColumn("Vuelto", typeof(decimal)));//Vuelto(S/.| $)
            this.dtbPagos.Columns.Add(new DataColumn("idMoneda", typeof(int)));
            this.dtbPagos.Columns.Add(new DataColumn("idFormaPago", typeof(int)));
            this.dtbPagos.Columns.Add(new DataColumn("idBanco", typeof(int)));
            this.dtbPagos.Columns.Add(new DataColumn("idTarjeta", typeof(int)));
        }

        #endregion
        #region Desplazamientos
        private void PresionadoTeclas(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Down)
            {
                if (sender == ctrlGrpCuotas)
                {
                    txtInicial.Focus();
                }
                if (sender == this.txtTotal)
                {
                    this.fecPago.Focus();
                    this.fecPago.SelectAll();
                }
                if (sender == this.fecPago)
                {
                    this.txtIdAdelanto.Focus();
                    this.txtIdAdelanto.SelectAll();
                }
                if (sender == this.txtIdAdelanto)
                {
                    this.txtInicial.Focus();
                    this.txtInicial.SelectAll();
                }
                if (sender == this.txtInicial)
                {
                    this.txtTotDebe.Focus();
                    this.txtTotDebe.SelectAll();
                }
                if (sender == this.txtTotDebe)
                {
                    this.txtDias.Focus();
                    this.txtDias.SelectAll();
                }

                if (sender == this.txtDias)
                {
                    this.txtCuotas.Focus();
                    this.txtCuotas.SelectAll();
                }
                if (sender == this.txtCuotas)
                {
                    this.txtTasaInteres.Focus();
                    this.txtTasaInteres.SelectAll();
                }
                if (sender == this.txtTasaInteres)
                {
                    this.txtIntervalo.Focus();
                    this.txtIntervalo.SelectAll();
                }
                if (sender == this.txtIntervalo)
                {
                    this.txtSaldoInicial.Focus();
                    this.txtSaldoInicial.SelectAll();
                }
                if (sender == this.txtSaldoInicial)
                {
                    this.txtCuotasPago.Focus();
                    this.txtCuotasPago.SelectAll();
                }

                //desplazamientos en cacelaciones

                if (sender == this.txtIdCaja)
                {
                    this.txtIdCobrador.Focus();
                    this.txtIdCobrador.SelectAll();
                }
                if (sender == this.txtIdCobrador)
                {
                    this.cmbTipDoc.Focus();
                    this.cmbTipDoc.SelectAll();
                }
                if (sender == this.cmbTipDoc)
                {
                    this.txtSerie.Focus();
                    this.txtSerie.SelectAll();
                }
                if (sender == this.txtSerie)
                {
                    this.txtNroComprobante.Focus();
                    this.txtNroComprobante.SelectAll();
                }
                if (sender == this.txtNroComprobante)
                {
                    this.cmdFormaPago.Focus();
                    this.cmdFormaPago.SelectAll();
                }

                if (sender == this.txtIdCtacobrar)
                {
                    this.txtVales.Focus();
                    this.txtVales.SelectAll();
                }
                if (sender == this.txtVales)
                {
                    this.cmdFormaPago.Focus();
                    this.cmdFormaPago.SelectAll();
                }
                
                if (sender == this.txtNroReferencia)
                {
                    if (this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                    {
                        this.cmbBanco.Focus();
                        this.cmbBanco.SelectAll();
                    }
                    else
                    {
                        if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                        {
                            this.cmbTarjeta.Focus();
                            this.cmbTarjeta.SelectAll();
                        }
                        else
                        {
                            if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never && this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never)
                            {
                                txtImporteCobrar.Focus();
                                txtImporteCobrar.SelectAll();
                            }

                        }
                    }
                }

                if (sender == this.txtNroOperacion)
                {
                    this.txtImporteCobrar.Focus();
                    this.txtImporteCobrar.SelectAll();
                }
                if (sender == this.txtImporteCobrar)
                {
                    this.txtImporteRecibido.Focus();
                    this.txtImporteRecibido.SelectAll();
                }
            }

            if (e.KeyCode == Keys.Right || e.KeyCode == Keys.Enter)
            {
                if (sender == this.cmbTipDoc)
                {
                    this.txtSerie.Focus();
                    this.txtSerie.SelectAll();
                }
                if (sender == this.cmdFormaPago)
                {
                    this.cmbMoneda.Focus();
                    this.cmbMoneda.SelectAll();
                }

                if (sender == this.cmbMoneda)
                {

                    if (this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                    {
                        this.cmbBanco.Focus();
                        this.cmbBanco.SelectAll();
                    }
                    else
                    {
                        if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                        {
                            this.cmbTarjeta.Focus();
                            this.cmbTarjeta.SelectAll();
                        }
                        else
                        {
                            if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never && this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never)
                            {
                                txtImporteCobrar.Focus();
                                txtImporteCobrar.SelectAll();
                            }

                        }
                    }
                    //this.txtNroReferencia.Focus();
                    //this.txtNroReferencia.SelectAll();
                }

                if (sender == this.cmbBanco)
                {
                    this.txtNroOperacion.Focus();
                    this.txtNroOperacion.SelectAll();
                }
                if (sender == this.cmbTarjeta)
                {
                    this.txtNroOperacion.Focus();
                    this.txtNroOperacion.SelectAll();
                }
            }
            if (e.KeyCode == Keys.Up)
            {
                if (sender == this.fecPago)
                {
                    this.txtTotal.Focus();
                    this.txtTotal.SelectAll();
                }
                if (sender == this.txtIdAdelanto)
                {
                    this.fecPago.Focus();
                    this.fecPago.SelectAll();
                }
                if (sender == this.txtInicial)
                {
                    this.txtIdAdelanto.Focus();
                    this.txtIdAdelanto.SelectAll();
                }
                if (sender == this.txtTotDebe)
                {
                    this.txtInicial.Focus();
                    this.txtInicial.SelectAll();
                }
                if (sender == this.txtDias)
                {
                    this.txtTotDebe.Focus();
                    this.txtTotDebe.SelectAll();
                }

                if (sender == this.txtCuotas)
                {
                    this.txtDias.Focus();
                    this.txtDias.SelectAll();
                }
                if (sender == this.txtTasaInteres)
                {
                    this.txtCuotas.Focus();
                    this.txtCuotas.SelectAll();
                }
                if (sender == this.txtIntervalo)
                {
                    this.txtTasaInteres.Focus();
                    this.txtTasaInteres.SelectAll();
                }
                if (sender == this.txtSaldoInicial)
                {
                    this.txtIntervalo.Focus();
                    this.txtIntervalo.SelectAll();
                }
                if (sender == this.txtCuotasPago)
                {
                    this.txtSaldoInicial.Focus();
                    this.txtSaldoInicial.SelectAll();
                }

                if (sender == this.txtSerie)
                {
                    this.cmbTipDoc.Focus();
                    this.cmbTipDoc.SelectAll();
                }

                if (sender == this.txtNroComprobante)
                {
                    this.txtSerie.Focus();
                    this.txtSerie.SelectAll();
                }
                if (sender == this.txtIdCtacobrar)
                {
                    this.txtNroComprobante.Focus();
                    this.txtNroComprobante.SelectAll();
                }
                if (sender == this.txtVales)
                {
                    this.txtIdCtacobrar.Focus();
                    this.txtIdCtacobrar.SelectAll();
                }
               
                if (sender == this.txtNroOperacion)
                {
                    if (this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                    {
                        this.cmbBanco.Focus();
                        this.cmbBanco.SelectAll();
                    }
                    else
                    {
                        if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                        {
                            this.cmbTarjeta.Focus();
                            this.cmbTarjeta.SelectAll();
                        }
                    }
                }

                if (sender == this.txtImporteCobrar)
                {
                    this.txtNroOperacion.Focus();
                    this.txtNroOperacion.SelectAll();
                }
                if (sender == this.txtImporteRecibido)
                {
                    this.txtImporteCobrar.Focus();
                    this.txtImporteCobrar.SelectAll();
                }
            }
            if (e.KeyCode == Keys.Left)
            {
                if (sender == this.cmdFormaPago)
                {
                    this.txtVales.Focus();
                    this.txtVales.SelectAll();
                }
                if (sender == this.cmbMoneda)
                {
                    this.cmdFormaPago.Focus();
                    this.cmdFormaPago.SelectAll();
                }

                if (sender == this.cmbBanco)
                {
                    this.txtNroReferencia.Focus();
                    this.txtNroReferencia.SelectAll();
                }
                if (sender == this.cmbTarjeta)
                {
                    this.txtNroReferencia.Focus();
                    this.txtNroReferencia.SelectAll();
                }
            }
        }

        public void RecControles(Control control)
        {
            foreach (Control contHijo in control.Controls)
            {
                if (contHijo.HasChildren)
                {
                    this.RecControles(contHijo);
                }
                contHijo.KeyDown += new KeyEventHandler(PresionadoTeclas);
            }
        }

        #endregion
        #region Validadaciones
        private bool VaidaTxtCreditos()
        {
            bool res = true;
            if (this.TOTAL_VENTA == 0)
            {
                res = false;
                XtraMessageBox.Show(this, "EL IMP.TOTAL DE LA VENTAS ES '0'  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (this.txtCuotas.Text == string.Empty)
                {
                    res = false;
                    XtraMessageBox.Show(this, "DEBE DE INGRESAR EL NRO DE CUOTAS  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (this.txtTasaInteres.Text == string.Empty)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "DEBE DE INGRESAR LA TASA DE INTERES  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (this.txtIntervalo.Text == string.Empty)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "DEBE DE INGRESAR EL INTERVALO DE DIAS DE LAS CUOTAS  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            res = true;
                        }
                    }
                }
            }
            return res;
        }

        private bool validacionescajas()
        {
            bool res = false;
            if (this.txtSerie.Text == string.Empty)
            {
                XtraMessageBox.Show(this, "La serie del comprobante no ha sido generada  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                res = false;
            }
            else
            {
                if (this.txtNroComprobante.Text == string.Empty)
                {
                    XtraMessageBox.Show(this, "ro de comprobante no ha sido generado   ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    
                    res = false;
                }
                else
                {
                    if (this.txtImporteCobrar.Text == string.Empty)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "El importe a cobrar esta vacio ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (this.txtMontoVuelto.Text == string.Empty)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "Ingrese el monto recibido  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            
                            this.txtImporteRecibido.Focus();
                        }
                        else
                        {
                            if (this.TOTAL_VENTA == 0 && double.Parse(this.lblImporteCobrar.Text) > 0)
                            {
                                res = false;
                                XtraMessageBox.Show(this, "No se puede realizar esta operacion\n el monto total de la venta es cero ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                if (this.MONTO_VUELTO > 0)
                                {
                                    XtraMessageBox.Show(this, "el valor del vuelto no pude ser mayor a cero, \nverifique este corretamente ingresado  el importe recibido", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    
                                    res = false;
                                }
                                else
                                {
                                    if (this.txtImporteCobrar.Text.Length == 0)
                                    {
                                        res = false;
                                        XtraMessageBox.Show(this, "Ingrese el importe a cobrar", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    else
                                    {
                                        if (double.Parse(this.txtImporteCobrar.Text) <= 0)
                                        {
                                            res = false;
                                            XtraMessageBox.Show(this, "Ingrese el importe a cobrar  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        }
                                        else
                                        {
                                            if (this.txtImporteRecibido.Text.Length == 0)
                                            {
                                                res = false;
                                                XtraMessageBox.Show(this, "Ingrese el importe a recibido  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                            }
                                            else
                                            {
                                                if (double.Parse(this.txtImporteRecibido.Text) <= 0)
                                                {
                                                    res = false;
                                                    XtraMessageBox.Show(this, "Ingrese el importe recibido  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                }
                                                else
                                                {
                                                    if (this.cmbMoneda.ItemIndex == -1)
                                                    {
                                                        res = false;
                                                        XtraMessageBox.Show(this, "SELECCIONE EL TIPO DE MONEDA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                        this.cmbMoneda.Focus();
                                                    }
                                                    else
                                                    {
                                                        if (this.cmdFormaPago.ItemIndex == -1)
                                                        { 
                                                            res = false;
                                                            XtraMessageBox.Show(this, "SELECCIONE EL TIPO DE MONEDA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                            this.cmdFormaPago.Focus();
                                                        }
                                                        else
                                                        {
                                                            res = true;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                //res=true;
                            }
                        }
                    }
                }
            }

            return res;
        }

        private bool ValidaSelects()
        {
            bool res = false;
            if (this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
            {
                if (this.cmbBanco.ItemIndex == -1)
                {
                    res = false;
                    XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUN BANCO\nPARA REALIZAR ESTA OPERACION", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    this.cmbBanco.Focus();
                }
                else
                {
                    res = true;
                }
            }
            else
            {
                if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                {
                    if (this.cmbTarjeta.ItemIndex == -1)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "NO HA SELECCIONADO\nNINGUNA TARJETA DE PAGO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        
                        this.cmbTarjeta.Focus();
                    }
                    else
                    {
                        res = true;
                    }
                }
                else
                {
                    if (this.cmbMoneda.ItemIndex == -1)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "SELECCIONE EL TIPO DE MONEDA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        this.cmbMoneda.Focus();
                    }
                    else
                    {
                        if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never && this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Never)
                        {
                            res = true;
                        }
                        else
                        {
                            res = false;
                        }
                    }
                }
            }

            return res;
        }

        private bool validaPagos()
        {
            bool res = false;
            if (this.op_fp == 1)
            {
                if (this.txtNroOperacion.Text == string.Empty)
                {
                    res = false;
                    this.txtNroOperacion.Focus();
                    this.lblMensaje.Text = "INGRESE EL NRO DE CHEQUE";
                }
                else
                {
                    res = true;
                    this.lblMensaje.Text = "";
                }
            }
            else
            {
                if (this.op_fp == 2)
                {
                    if (this.txtNroOperacion.Text == string.Empty)
                    {
                        res = false;
                        this.txtNroOperacion.Focus();
                        this.lblMensaje.Text = "INGRESE EL NRO DE OPERACIÓN";
                    }
                    else
                    {
                        res = true;
                        this.lblMensaje.Text = "";
                    }
                }
                else
                {
                    if (this.op_fp == 4)
                    {
                        if (this.txtNroOperacion.Text == string.Empty)
                        {
                            res = false;
                            this.txtNroOperacion.Focus();
                            this.lblMensaje.Text = ("INGRESE EL NRO DE OPERACIÓN");
                        }
                        else
                        {
                            res = true;
                            this.lblMensaje.Text = ("");
                        }
                    }
                    else
                    {
                        if (this.MONTO_VUELTO > 0)
                        {
                            // XtraMessageBox.Show(this, "EL IMP.AMORTIZADO \n NO PUEDE SER MAYOR QUE EL \nIMPORTE A TOTAL PAGAR  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            XtraMessageBox.Show(this, "el valor del vuelto no pude ser mayor a cero, \nverifique este corretamente ingresado  el importe recibido",
                                "Información", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            res = false;
                        }
                        else
                        {
                            res = true;
                        }
                    }
                }
            }
            return res;
        }



        private bool ValidadcionesMov()
        {
            bool res = true;
            if (txtSerie.Text==string.Empty)
            {
                XtraMessageBox.Show(this, "La serie del comprobante no ha sido generada  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                res = false;
            }
            else
            {
                if (txtNroComprobante.Text==string.Empty)
                {
                    XtraMessageBox.Show(this, "Nro de comprobante no ha sido generado  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    res = false;
                }
                else
                {
                    if (this.txtTotImporte.Text==string.Empty)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "El importe TOTAL esta vacio  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        if (this.txtTotalVuelto.Text == string.Empty)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "Ingrese el monto recibido ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                            txtTotalVuelto.Focus();
                        }
                        else
                        {
                            if (double.Parse(txtTotImporte.Text) == 0 && double.Parse(lblImporteCobrar.Text) > 0)
                            {
                                res = false;
                                XtraMessageBox.Show(this, "No se puede realizar esta operacion\n"
                                        + " el monto total de la venta es cero", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                
                            }
                            else
                            {
                                if (double.Parse(txtTotImporte.Text) < double.Parse(lblImporteCobrar.Text))
                                {
                                    XtraMessageBox.Show(this, "OPERACION INCORRECTA \n\n"
                                            + "EL MONTO CANCELADO ES MENOR AL IMPORTE TOTAL A PAGAR", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                

                                }
                                else
                                {
                                    /* if (Double.valueOf(format.QuitarFormatNumer(txtTotImporte.getText())) > Double.valueOf(format.QuitarFormatNumer(lblImporteCobrar.getText()))) {
                                         JOptionPane.showMessageDialog(this, "OPERACION INCORRECTA \n\n"
                                                 + "EL MONTO CANCELADO ES MAYOR AL IMPORTE TOTAL A PAGAR",
                                                 "Información", JOptionPane.WARNING_MESSAGE);

                                     } else {*/

                                    res = true;
                                    //}
                                }
                                //res=true;
                            }

                        }
                    }
                }
            }
            return res;
        }


        private bool ValidadcionesMovContado()
        {
            bool res = false;
            if (txtIdCaja.Text == string.Empty)
            {
                res = false;
                XtraMessageBox.Show(this, "No ha seleccionado ninguna caja destino ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtIdCaja.Focus();
            }
            else
            {
                if (txtSerie.Text == string.Empty)
                {
                    res = false;
                    XtraMessageBox.Show(this, "La serie del comprobante no ha sido generada  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtSerie.Focus();

                }
                else
                {
                    if (txtNroComprobante.Text == string.Empty)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "Nro de comprobante no ha sido generado  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtNroComprobante.Focus();

                    }
                    else
                    {
                        if (this.txtTotImporte.Text == string.Empty)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "El importe TOTAL esta vacio  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                        }
                        else
                        {
                            if (this.txtMontoVuelto.Text == string.Empty)
                            {
                                res = false;
                                XtraMessageBox.Show(this, "Ingrese el monto recibido ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                            }
                            else
                            {

                                if (double.Parse(txtTotImporte.Text) < double.Parse(lblImporteCobrar.Text))
                                {
                                    res = false;
                                    XtraMessageBox.Show(this, "OPERACION INCORRECTA \n\n"
                                            + "EL MONTO CANCELADO ES MENOR AL IMPORTE TOTAL A PAGAR", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);


                                }
                                else
                                {

                                    res = true;

                                }

                            }
                        }
                    }
                }
            }
            return res;
        }

        
        
        private void HabilitarFP()
        {
            // cmbBanco.Properties.Columns.Clear();
            int IDFP = int.Parse(this.cmdFormaPago.EditValue.ToString());
            switch (IDFP)
            {
                case 7: //CHEQUE
                    this.ItemBanco.Size = new System.Drawing.Size(230, 24);
                    this.ItemBanco.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    this.ItemNroOperacion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    
                    this.cmbBanco.Enabled = true;
                    this.ItemBanco.Text = "Banco";
                    this.txtNroOperacion.Enabled = true;
                    this.op_fp = 1;
                    if (this.BGWBanco.IsBusy)
                    {
                        this.BGWBanco.RunWorkerAsync();
                    }
                    break;
                case 1: //DEPOSITO
                    this.ItemBanco.Size = new System.Drawing.Size(230, 24);
                    this.ItemBanco.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    this.ItemNroOperacion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.cmbBanco.Enabled = true;
                    this.ItemBanco.Text = "Banco";
                    this.txtNroOperacion.Enabled = true;
                    if (this.BGWBanco.IsBusy)
                    {
                        this.BGWBanco.RunWorkerAsync();
                    }
                    
                    this.op_fp = 2;
                    break;
                case 8: //EFECTIVO
                    this.ItemBanco.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    // ItemTarjeta.Size = new System.Drawing.Size(282, 24);
                    this.ItemNroOperacion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                   // this.cmbBanco.Enabled = false;
                    this.ItemBanco.Text = "Caja";
                    this.txtNroOperacion.Enabled = false;
                    this.op_fp = 3;
                    if (this.BGWBanco.IsBusy)
                    {
                        this.BGWBanco.RunWorkerAsync();
                    }
                    //  cmbBanco.Properties.ValueMember = "id_caja";
                    //  cmbBanco.Properties.DisplayMember = "nombre";
                    break;
               
                case 6: //TARJETA DE CREDITO
                    // layoutControlItem10.Location = new Point(-100, -500);
                    this.ItemBanco.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemNroOperacion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemTarjeta.Size = new System.Drawing.Size(282, 24);
                    this.cmbBanco.Enabled = true;
                    this.ItemBanco.Text = "Tarjeta";
                    this.txtNroOperacion.Enabled = true;
                    if (this.BGWTarjetaCredito.IsBusy)
                    {
                        this.BGWTarjetaCredito.RunWorkerAsync();
                    }
                  
                    break;
                case 5: //TARJETA DE DEBITO
                    
                    this.ItemTarjeta.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemBanco.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                    this.ItemNroOperacion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                    this.ItemTarjeta.Size = new System.Drawing.Size(270, 24);
                    this.cmbBanco.Enabled = true;
                    this.ItemBanco.Text = "Tarjeta";
                    this.txtNroOperacion.Enabled = true;
                    if (this.BGWTarjetaCredito.IsBusy)
                    {
                        this.BGWTarjetaCredito.RunWorkerAsync();
                    }
                   
                    this.op_fp = 4;
                    break;
                default:
                    this.op_fp = 5;
                    break;
            }
        }
        private bool ValidarNroComprobante()
        {
            bool res = false;
            if (this.txtSerie.Text != string.Empty && this.txtNroComprobante.Text != string.Empty)
            {
                if (int.Parse(this.txtSerie.Text) == 0)
                {
                    res = false;
                    this.txtSerie.Focus();
                }
                else
                {
                    if (int.Parse(this.txtNroComprobante.Text) == 0)
                    {
                        res = false;
                        this.txtNroComprobante.Focus();
                    }
                    else
                    {
                        res = true;
                    }
                }
            }
            else
            {
                this.txtSerie.Focus();
                res = false;
            }
            return res;
        }
        #endregion
        #region Caluculos
        private void getFactoresCuotas()
        {
            if (dtbCuota.Rows.Count > 0)
            {
                this.dtbCuota.Clear();
            }
            
            string ValAmotizaString = null;
            ValAmotizaString = this.txtInicial.EditValue.ToString();
            if (string.IsNullOrEmpty( ValAmotizaString))
            {
                this.txtInicial.EditValue = "0.0";
                ValAmotizaString = "0.0";
            }
            double amort_ini = double.Parse(this.txtInicial.EditValue.ToString());
            double nPorInteres = double.Parse(this.txtTasaInteres.Text);
            double coutas = int.Parse(this.txtCuotas.Text);
            double monto_cuota = this.TOTAL_CREDITO / coutas;
            double nTotCIMes = 0;//idPed.redondear(MONTO_CREDITO*nPorInteres,2);
            double val_interes = 0;
            if (nPorInteres > 0)
            {
                nTotCIMes = this.TOTAL_CREDITO * nPorInteres;
                val_interes = nTotCIMes - monto_cuota;
            }
            else
            {
                val_interes = 0;
                nTotCIMes = monto_cuota;
            }
            lblImporteMensual.Text=val_interes.ToString();
            lblMontoCuota.Text=monto_cuota.ToString();
            this.FECHA_FAC = DateTime.Parse(this.fecPago.Text);
            DateTime fecNew = this.util.AumentardDias(DateTime.Parse(this.fecPago.Text), int.Parse(this.txtIntervalo.Text));
            DateTime fec = DateTime.Parse(this.fecPago.Text);
            if (double.Parse(ValAmotizaString) > 0)
            {
                this.AddCoutaInicial();
            }
            if (double.Parse(this.txtTotDebe.Text) > 0)
            {
                this.AddCoutaDebe();
            }
            int meses = 1;
            if (this.TOTAL_CREDITO > 0)
            {
                if (amort_ini <= this.TOTAL_VENTA)
                {
                    for (int i = 1; i <= coutas; i++)
                    {
                        //    FECHA_FAC = fecNew;
                        // fecNew = util.AumentarMeses(FECHA_FAC, 1);/// ALMACENAMOS TEMPORALMENTE
                        DataRow r;
                        r = this.dtbCuota.NewRow();
                        r["Cuota"] = string.Format("C-{0}", i);
                        r["Fecha"] = this.FECHA_FAC.AddMonths(meses).Date;
                        r["Capital"] = monto_cuota;
                        r["Intereses"] = val_interes;
                        r["Total_Couta"] = nTotCIMes;
                        r["Pagos"] = 0.0;
                        r["Saldo"] = this.TOTAL_CREDITO - (monto_cuota * i);
                        r["Dias"] = this.txtIntervalo.Text;
                        this.dtbCuota.Rows.Add(r);
                        meses += 1;
                    }
                }
                else
                {

                }
            }
            else
            {
                XtraMessageBox.Show(this, "No se puede Generar las cuotas debido\n"
                   + " a que el Monto Amortizado\n"
                   + " es igual que el Monto del capital", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);

            
            }
        }

        private void AddCoutaInicial()
        {
            DateTime ofDay = DateTime.Parse(this.fecPago.Text);
            decimal saldo = decimal.Parse(this.txtTotal.Text) - decimal.Parse(this.txtInicial.Text);
            DataRow r;
            r = this.dtbCuota.NewRow();
            r["Cuota"] = "I-0";
            r["Fecha"] = ofDay;
            r["Capital"] = decimal.Parse(this.txtInicial.Text);
            r["Intereses"] = 0.00;
            r["Total_Couta"] = decimal.Parse(this.txtInicial.Text);
            r["Pagos"] = decimal.Parse(this.txtInicial.Text); 
            r["Saldo"] = saldo;
            r["Dias"] = this.txtIntervalo.Text;
            this.dtbCuota.Rows.Add(r);
        }

        private void AddCoutaDebe()
        {
            DateTime ofDay = DateTime.Parse(this.fecPago.Text).AddDays(int.Parse(this.txtDias.Text));
            decimal saldo_cero = decimal.Parse(this.txtTotal.Text) - decimal.Parse(this.txtInicial.Text);
            decimal saldo = saldo_cero - decimal.Parse(this.txtTotDebe.Text);
            DataRow r;
            r = this.dtbCuota.NewRow();
            r["Cuota"] = "D-1";
            r["Fecha"] = ofDay;
            r["Capital"] = decimal.Parse(this.txtTotDebe.Text);
            r["Intereses"] = 0.00;
            r["Total_Couta"] = decimal.Parse(this.txtTotDebe.Text);
            r["Pagos"] = 0.00;
            r["Saldo"] = saldo;
            r["Dias"] = this.txtIntervalo.Text;
            this.dtbCuota.Rows.Add(r);
        }

        private void getAmortizacion()
        {
            string imp_amortiza = null;//varible temporal para optener el valor del importe de amortizacion(txtInicial)
            string imp_debe = null;//almacen el importe que debe de la inicial que no se cobra intereses
            //ademas es en un determinado numero de dias canselado(txtTotDebe)
            imp_amortiza = this.txtInicial.Text;
            if (imp_amortiza == string.Empty)
            {
                imp_amortiza = "0.0";
            }
            imp_debe = this.txtTotDebe.Text;
            if (imp_debe == string.Empty)
            {
                imp_debe = "0.00";
            }
            this.TOTAL_VENTA = double.Parse(this.txtTotal.Text); 
            this.MONTO_AMORTIZA = double.Parse(imp_amortiza);
            this.MONTO_DEBE = double.Parse(imp_debe);
            this.MONTO_INICIAL = this.MONTO_AMORTIZA + this.MONTO_DEBE;// CALCULAMOS EL TOTAL DE LA VENTA
            if (this.MONTO_INICIAL <= this.TOTAL_VENTA)
            {
                this.TOTAL_CREDITO = this.TOTAL_VENTA - this.MONTO_INICIAL - this.MONTO_ADELANTO;
                this.txtSaldoInicial.Text = this.TOTAL_CREDITO.ToString();
                this.lblImporteCobrar.Text = imp_amortiza;
                this.IMPORTE_COBRAR = this.MONTO_AMORTIZA;//ALMACENMOS el IMPORTE QUE SE VA HA COBRAR MEDIANTE CANCELACIONES
            }
            else
            {
                this.txtInicial.SelectAll();
                XtraMessageBox.Show(this, "EL IMPORTE AMORTIZADO NO PUEDE\n SER MAYOR QUE EL TOTAL DE LA VENTA  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.txtInicial.Focus();
                // txtInicial.Text = "0.00";
                // txtTotDebe.Text = "0.00";
                this.txtInicial.SelectAll();
            }
            this.txtTotal.Text = this.TOTAL_VENTA.ToString();
        }

        private void CalcularTotales()
        {
            double val_tot_capital = 0.0;
            double val_tot_interes = 0.0;
            double val_tot_monto_cuota = 0.0;
            double val_tot_pagos = 0.0;
            double val_tot_saldo = 0.0;
            double residuo = 0.0;
            for (int i = 0; i < this.dtbCuota.Rows.Count; i++)
            {
                if (this.dtbCuota.Rows[i]["Cuota"] != "I-0")
                {
                    val_tot_capital += double.Parse(this.dtbCuota.Rows[i]["Capital"].ToString());
                    val_tot_interes += double.Parse(this.dtbCuota.Rows[i]["Capital"].ToString());
                    val_tot_monto_cuota += double.Parse(this.dtbCuota.Rows[i]["Total_Couta"].ToString());
                    val_tot_pagos += double.Parse(this.dtbCuota.Rows[i]["Pagos"].ToString());
                    val_tot_saldo += double.Parse(this.dtbCuota.Rows[i]["Saldo"].ToString());
                }
            }
            residuo = this.TOTAL_CREDITO - val_tot_capital;
            this.txtTotCapital.Text = val_tot_capital.ToString(); 
            this.lblRest.Text = residuo.ToString();
            this.txtTotIntereses.Text = val_tot_interes.ToString();
            this.txtTotMontoCuota.Text = val_tot_monto_cuota.ToString();
            this.txtPagos.Text = val_tot_pagos.ToString();
            this.txtSaldo.Text = val_tot_monto_cuota.ToString();
        }

        #endregion
        #region Calculos Cancelaciones

        double TOTAL_LISTA = 0;
        double EQUIVALE_SOLES;
        double TOT_EQUIVALE_SOLES;
        double IMPORTE_PENDIENTE;
        private void getAmortizacionMov()
        {
            string imp_amotiza = null;
            imp_amotiza = this.txtImporteCobrar.Text;
            if (imp_amotiza == string.Empty)
            {
                imp_amotiza = "0.0";
            }
            this.TOTAL_LISTA = 0;
            this.MONTO_AMORTIZA = double.Parse(imp_amotiza);
            double total_s = 0;
            double total_d = 0;
            for (int i = 0; i < this.dtbPagos.Rows.Count; i++)
            {
                if (this.dtbPagos.Rows[i]["M"].ToString() == "$")
                {
                    total_d += double.Parse(this.dtbPagos.Rows[i]["Importe"].ToString());
                }
                else
                {
                    total_s += double.Parse(this.dtbPagos.Rows[i]["Importe"].ToString());
                }
            }
            this.TOTAL_LISTA = total_s + total_d * double.Parse(this.txtTipoCambio.Caption);
            if (this.cmbMoneda.SelectedText == "$")// ejecutamos si es ua venta en dolares
            {
                this.EQUIVALE_SOLES = this.MONTO_AMORTIZA * double.Parse(this.txtTipoCambio.Caption);
                this.TOT_EQUIVALE_SOLES = this.TOTAL_LISTA + this.EQUIVALE_SOLES;

                this.IMPORTE_PENDIENTE = this.IMPORTE_COBRAR - (this.EQUIVALE_SOLES + this.TOTAL_LISTA);
                if (this.TOT_EQUIVALE_SOLES > double.Parse(this.lblImporteCobrar.Text))
                {
                    this.txtImporteCobrar.SelectAll();
                    XtraMessageBox.Show(this, "EL IMP.AMORTIZADO \n NO PUEDE SER MAYOR QUE EL \nIMPORTE A TOTAL PAGAR  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                this.EQUIVALE_SOLES = this.MONTO_AMORTIZA;
                this.IMPORTE_PENDIENTE = this.IMPORTE_COBRAR - (this.EQUIVALE_SOLES + this.TOTAL_LISTA);
                this.TOT_EQUIVALE_SOLES = this.TOTAL_LISTA + this.EQUIVALE_SOLES;
                if (this.TOT_EQUIVALE_SOLES > double.Parse(this.lblImporteCobrar.Text))
                {
                    this.txtImporteCobrar.SelectAll();
                    XtraMessageBox.Show(this, "EL IMP.AMORTIZADO \n NO PUEDE SER MAYOR QUE EL \nIMPORTE A TOTAL PAGAR  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            StringBuilder cadena = new StringBuilder();
            cadena.Append(this.cmbMoneda.SelectedText);
            cadena.Append(" ");
            cadena.Append(this.txtImporteCobrar.Text);
            cadena.Append("  Equivale en S/. : ");
            cadena.Append(this.EQUIVALE_SOLES);
            this.lblMsg.Text = string.Format("PENDIENTE : {0}", this.IMPORTE_PENDIENTE);
            this.lblEquiVale.Text = cadena.ToString();// cmbMoneda.SelectedText + "  " + txtImporteCobrar.Text + "  ||  Equivale en S/. : " + EQUIVALE_SOLES;
        }

        private double MONTO_RECIBIDO;
        public double MONTO_VUELTO;
        private double MONTO_PAGAR;
        private void getImporteVuelto()
        {
            if (this.txtImporteCobrar.Text.Length > 0)
            {
                if (this.txtImporteRecibido.Text != string.Empty)
                {
                    this.MONTO_RECIBIDO = double.Parse(this.txtImporteRecibido.Text);
                    this.MONTO_PAGAR = double.Parse(this.txtImporteCobrar.Text);
                    if (this.MONTO_PAGAR > 0)
                    {
                        if (this.TOT_EQUIVALE_SOLES > this.IMPORTE_COBRAR)
                        {
                            XtraMessageBox.Show(this, "EL IMP.AMORTIZADO \n NO PUEDE SER MAYOR QUE EL \nIMPORTE A TOTAL PAGAR  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            this.txtImporteCobrar.Text = "0.00";
                        }
                        this.MONTO_VUELTO = this.MONTO_PAGAR - this.MONTO_RECIBIDO;
                        this.txtMontoVuelto.Text = this.MONTO_VUELTO.ToString();
                    }
                    else
                    {
                        if (this.MONTO_RECIBIDO > 0)
                        {
                            XtraMessageBox.Show(this, "Ingrese el Monto del Importe a Cobrar  ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //return;
                        }
                        //txtImporteCobrar.Focus();
                    }
                }
            }
            else
            {
                XtraMessageBox.Show(this, "Ingrese el Importe a Cobrar ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.txtImporteCobrar.Focus();
            }
        }

        private void AddDetallePagos()
        {
            double vuelto = double.Parse(this.txtMontoVuelto.Text);
            String val_vuelto = "0.00";
            object idBanco;
            object idTarjeta;
            if (vuelto < 0)
            {
                val_vuelto = this.txtMontoVuelto.Text;
            }
            else
            {
                val_vuelto = "0.00";
            }
            String banco = "";
            if (this.ItemBanco.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility .Always)
            {
                banco = this.cmbBanco.Text;
                idBanco = this.cmbBanco.EditValue.ToString();
            }
            else
            {
                banco = "";
                idBanco = DBNull.Value;
            }
            String tarjeta = "";
            if (this.ItemTarjeta.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
            {
                tarjeta = this.cmbTarjeta.Text;
                Console.Write(string.Format("TAREJATA :{0}", tarjeta));
                idTarjeta = this.cmbTarjeta.EditValue.ToString();
            }
            else
            {
                idTarjeta = DBNull.Value;// DBNull.Value.ToString();
                tarjeta = "";
            }
            
            DataRow r = this.dtbPagos.NewRow();
            r["Form_pago"] = this.cmdFormaPago.Text;
            r["Banco"] = banco;
            r["Tarjeta"] = tarjeta;
            r["Nro_Operación"] = this.txtNroOperacion.Text;
            r["M"] = this.cmbMoneda.Text;
            r["Importe"] = this.txtImporteCobrar.Text;
            r["Imp_Recibido"] = this.txtImporteRecibido.Text;
            r["Equivale"] = this.EQUIVALE_SOLES;
            r["Vuelto"] = val_vuelto;
            r["idMoneda"] = this.cmbMoneda.EditValue;
            r["idFormaPago"] = this.cmdFormaPago.EditValue;
            r["idBanco"] = idBanco;
            r["idTarjeta"] = idTarjeta;
            this.dtbPagos.Rows.Add(r);
        }
        double IMPORTE_TOTAL = 0.00;
        double IMPORTE_TOTAL_VUELTO = 0.00;
        double IMPORTE_TOTAL_RECIBIDO = 0.00;
        private void Totales()
        {
            double importe_s = 0.00;
            double importe_d = 0.00;
            double imp_recibido_s = 0.00;
            double imp_recibido_d = 0.00;
            double imp_vuelto_s = 0.00;
            double imp_vuelto_d = 0.00;
            
            for (int i = 0; i < this.dtbPagos.Rows.Count; i++)
            {
                if (dtbPagos.Rows[i]["M"].ToString() == "$")
                {
                    imp_recibido_d += double.Parse(this.dtbPagos.Rows[i]["Imp_Recibido"].ToString());
                    importe_d += double.Parse(this.dtbPagos.Rows[i]["Importe"].ToString());
                    imp_vuelto_d += double.Parse(this.dtbPagos.Rows[i]["Vuelto"].ToString());
                }
                else
                {
                    imp_recibido_s += double.Parse(this.dtbPagos.Rows[i]["Imp_Recibido"].ToString());
                    importe_s += double.Parse(this.dtbPagos.Rows[i]["Importe"].ToString());
                    imp_vuelto_s += double.Parse(this.dtbPagos.Rows[i]["Vuelto"].ToString());
                }
            }
            IMPORTE_TOTAL_RECIBIDO = imp_recibido_s + imp_recibido_d * double.Parse(this.txtTipoCambio.Caption);
            IMPORTE_TOTAL_VUELTO = imp_vuelto_s + imp_vuelto_d * double.Parse(this.txtTipoCambio.Caption);
            IMPORTE_TOTAL = importe_s + importe_d * double.Parse(this.txtTipoCambio.Caption);

            this.txtTotImporte.Text = IMPORTE_TOTAL.ToString();
            this.txtImpRecibido_s.Text = IMPORTE_TOTAL_RECIBIDO.ToString();
            // txtImpRecibido_d.setText(format.FormatMoney(String.valueOf(imp_recibido_d)));
            this.txtTotalVuelto.Text = IMPORTE_TOTAL_VUELTO.ToString();
        }
        
        #endregion
        #region Operacione de Grabar datos
     
        private void Ok(){
            if (XtraMessageBox.Show(this, "Está a punto de confirmar el Movimiento de caja\n" +
                                    "Confirmación Requerida ?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                this.opSave = 1;
                this.Close();
            }
            else
            {
                opSave = 0;
            }
        }
        private void OperacionesMoviemiento()
        {
            if (int.Parse(this.getTipventa.ToString()) == 9)//venta al credito
            {
                if (ValidadcionesMov())
                {
                    if (VaidaTxtCreditos())
                    {
                        if (double.Parse(txtInicial.Text) > 0)
                        {
                            //cuando existe una amortizacion de una venta al credito
                            if (ValidarNroComprobante())
                            {

                                Ok();
                            }
                            else
                            {
                                XtraMessageBox.Show(this, "Ingrese Correctamen Serie y Nro de Comprobante", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                this.txtSerie.Focus();
                            }
                        }
                        else
                        {
                            ///si no existe ninguna amortizacion de una venta al credito
                            Ok();
                        }
                    }
                }

            }
            else
            {
                if (ValidadcionesMovContado() == true)
                {
                    if (ValidarNroComprobante())
                    {
                        Ok();
                    }
                    else
                    {
                        XtraMessageBox.Show(this, "Ingrese Correctamen Serie y Nro de Comprobante", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        this.txtSerie.Focus();
                    }
                }
            }
        }
        private void CabMovimientos()
        {
            CabMov.Add(cmdFormaPago.EditValue);//0 -15
            CabMov.Add(cmbMoneda.EditValue);//1 -16
            CabMov.Add(IMPORTE_TOTAL);//2 - 17 IMPORTE TOTAL QUE HA SIDO CANCELADO MEDIANTE LO DIVERSOS FORMAS DE PAGO
            CabMov.Add(IMPORTE_TOTAL_VUELTO);// 3 -18  importe total del vuelto del importe recivido
            CabMov.Add(IMPORTE_TOTAL_RECIBIDO);// 4  -19 importe total recibido
            CabMov.Add(IMPORTE_COBRAR);// 5 - 20 el importe total de la facturacion a Cobrar
            CabMov.Add(cmbTipDoc.EditValue);// 6 -21  tipo de comprobante del movimiento
            CabMov.Add(txtSerie.Text);// 7 -22  serie del comprobante del movimiento de pago
            CabMov.Add(txtNroComprobante.Text);//8 -23 nro de comprobante del movimiento de caja
            CabMov.Add(txtNroReferencia.Text); //9 -24 
            CabMov.Add(txtIdCaja.Text.Trim());//10 -25 caja destino del dinero
            CabMov.Add(txtIdCobrador.Text);//11 -26 caja destino del dinero
            CabMov.Add(ID_CREDITO);//12-27 el id del credito caso fuera un anticipo
            CabMov.Add(ID_SUCURSAL);//13-28 el id de la sucursal caso fuera un anticipo
        }
        private void Grabardatos()
        {
            CabMov = new ArrayList();
            if (int.Parse(this.getTipventa.ToString()) == 9)//venta al credito
            {
                CabMov.Add(txtSaldoInicial.Text);// 0 ALMACEN EL IMPORTE TOTAL DEL CREDITO QUE SE ESTA CANJEANDO SIN INTERESES GENERADOS TOTAL_FACTURACION-IMPORTE DE ADEALANTO
                CabMov.Add(txtInicial.Text);// 1 ALMACENA EL IMPORTE INICIAL DEL TOTAL Y/O AMORTIZACIO
                CabMov.Add(txtCuotas.Text);// 2 NRO DE CUOTAS GENERADAS DEL TOTAL DEL CREDITO
                CabMov.Add(txtTasaInteres.Text);//3 ALMACENA LA TASA O FACTOR DE INTERES QUE SE VA HA APLICAR A LAS CUOTAS GENERADAS DEL CREDITO
                CabMov.Add(txtIntervalo.Text);// 4 ALMACENA EL INTERVALO DE DIAS QUE TENDRA CADA CUOTA
                CabMov.Add(txtCuotasPago.Text);//5 ALMACENA DE CUANAS CUOTA NOMAS SE PAGARA EL INTERES GENERADO
                CabMov.Add(txtTotCapital.Text);//6 ALMACEN EL TOTAL DEL CAPITAL DESPUES DE GENERA LAS CUOTAS
                CabMov.Add(lblRest.Text);//7 ALMACENA EL IMPORTE DEL RESIDUO UNA VES QGENERADO LAS CUOTAS
                CabMov.Add(txtTotIntereses.Text);//8 ALMACENA EL  TOTAL DE LOS INTERESES ACULADOS UNA VEZ GENERADO LAS CUOTAS
                CabMov.Add(txtTotMontoCuota.Text);//9 ALMACENA EL IMPORTE TOTAL DE LAS CUOTAS UNA VEZ GENERADO TODAS LAS CUOTAS INCLUIDO SUS INTERESES
                CabMov.Add(txtPagos.Text);//10 ALMACENA EL IMPORTE TOTAL QUE SE ESTA CANCELANDO CASE FUERA EL CASO UNA AMORTIZACION O ADELANTO
                CabMov.Add(txtSaldo.Text);//11 IMPORTE QUE SE ESTA ADEUDANDO
                CabMov.Add(lblImporteMensual.Text);//12 ALMACENA EL IMPORTE MENSUAL QUE SE COBRARA POR LOS INTERESES GENERADOS POR CUOTA
                CabMov.Add(lblMontoCuota.Text);//13 ALMACENA EL IMPORTE MENSUAL DE CUOTA SIN INTERES
                CabMov.Add(fecPago.Text);// 14 ALMACENA LA FECHA DE INICIO DE PAGO DE LAS CUOTAS
                CabMovimientos();
            }
            else
            {
                //ventas al contado
                CabMovimientos();
              }
            OperacionesMoviemiento();
        }

        #endregion
        #region Busquedas
        private void SeleccionarVendedor()
        {
            Listados.frmListadoPersona f = new Listados.frmListadoPersona();
            f.ShowDialog();
            txtIdCobrador.Text = f.idPer;
            txtCobrador.Text = f.full_name;
        }
        /// <summary>
        /// 1: anticipo generado desde una venta al contado
        /// 2: anticipo generado desde una venta al credito
        /// </summary>
        /// <param name="op"></param>
        private void SeleccionarAnticipo(int op)
        {
            Listados.frmListAnticipos f = new Listados.frmListAnticipos(this.DataCli);
            f.ShowDialog();
            if (f.TOT_ANTICIPO != null && f.ID_CREDITO != null && f.ID_SUCURSAL != null)
            {
                if (f.op_ok == 1)
                {
                    ID_CREDITO = f.ID_CREDITO;
                    ID_SUCURSAL = f.ID_SUCURSAL;
                    if (op == 1)
                    {
                        txtImpAnticipo.Text = string.Format("{0}", f.TOT_ANTICIPO);
                        txtIdCtacobrar.Text = string.Format("{0}{1}", f.ID_CREDITO, f.ID_SUCURSAL);
                        Anticipos(1);
                    }
                    else
                    {
                        txtIdAdelanto.Text = string.Format("{0}{1}", f.ID_CREDITO, f.ID_SUCURSAL);
                        txtMontoAdelanto.Text = string.Format("{0}", f.TOT_ANTICIPO);
                        Anticipos(2);

                    }
                }
            }
        }
        #endregion
        #region Gestion de Plantillas
        public string PLANTILLA;
        public string IMPRESORA;
        private void getPlantilla()
        {
            if (cmbTipDoc.EditValue != null)
            {
                ESistema obj = new ESistema();
                StringBuilder cadena = new StringBuilder();
                cadena.Append("where id_tranzaccion='");
                cadena.Append(20 + "' and ");
                cadena.Append(" id_documento=");
                cadena.Append(cmbTipDoc.EditValue + "");
                obj.Condicion = cadena.ToString();
                DataTable dtb = System2012.SystemUtils.RecordManagerCommonList.GetListaSeriesDocumento(obj);
                if (dtb.Rows.Count > 0)
                {
                    PLANTILLA = dtb.Rows[0]["plantilla"].ToString();
                    IMPRESORA = dtb.Rows[0]["impresora"].ToString();
                    txtSerie.Text = dtb.Rows[0]["serie"].ToString();
                    getCorrelativo();
                }
                else
                {
                    txtSerie.Text = null;
                    PLANTILLA = null;
                    IMPRESORA = null;
                }
            }
        }
        private void getCorrelativo()
        {
            ESeriesDocumento Es = new ESeriesDocumento();
            Es.Id_Tranzaccion = "20";
            Es.Id_Documento = int.Parse(cmbTipDoc.EditValue.ToString());
            Es.Serie = txtSerie.Text;
            Es.Id_Sucursal = 1;
            string correlativo = System2012.SystemUtils.CommonMaintenanceList.getCorrelativo(Es);
            txtNroComprobante.Text = correlativo.PadLeft(7, '0'); 
        }
        #endregion
        #region Anticipos
        //double MONTO_ADELANTO;

        private void Anticipos(int op)
        {
            if (op == 1)
            {
                string anticipo = txtImpAnticipo.Text;
                if (string.IsNullOrEmpty(anticipo))
                {
                    anticipo = "0.00";
                }
                this.IMPORTE_COBRAR = TOTAL_VENTA - double.Parse(anticipo);
                lblImporteCobrar.Text = IMPORTE_COBRAR.ToString();
                txtImporteCobrar.Text = IMPORTE_COBRAR.ToString();
                op_anticipo = 2;
            }
            if (op == 2)
            {
                MONTO_ADELANTO = 0.0;
                MONTO_ADELANTO = Convert.ToDouble(txtMontoAdelanto.Text);
                if (TOTAL_VENTA >= MONTO_ADELANTO)
                {
                    TOTAL_CREDITO = TOTAL_VENTA - MONTO_ADELANTO;
                    this.txtSaldoInicial.Text = Convert.ToString(TOTAL_CREDITO);
                    txtImporteCobrar.Text="0.00";
                    txtInicial.Text="0.00";
                    op_anticipo = 2;
                }
            }

        }
        #endregion
        private void frmVisorVentasCreditos_Load(object sender, EventArgs e)
        {
            this.gridControl2.DataSource = this.dtbCuota;
            this.gridControl1.DataSource = this.dtbPagos;
        }

        private void txtInicial_TextChanged(object sender, EventArgs e)
        {
            this.getAmortizacion();
        }

        private void txtTotDebe_TextChanged(object sender, EventArgs e)
        {
            this.getAmortizacion();
        }

        private void barButtonItem10_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (this.VaidaTxtCreditos())
            {
                this.getFactoresCuotas();
            }
        }

        private void txtCuotasPago_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                if (this.VaidaTxtCreditos() == true)
                {
                    this.getFactoresCuotas();
                    this.CalcularTotales();
                }
            }
        }

        private void BGWTipDoc_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = System2012.SystemUtils.RecordManagerCommonList.GetDocument(2);
        }

        private void BGWTipDoc_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.cmbTipDoc.Properties.DataSource = e.Result;
            if (!this.BGWFormaPago.IsBusy)
            {
                if (int.Parse(this.getTipventa.ToString()) == 9)//venta al creito
                {
                    cmbTipDoc.EditValue = 24;
                }
                else
                {
                    cmbTipDoc.EditValue = 24;//movi
                }
                this.BGWFormaPago.RunWorkerAsync();

            }
        }

        private void BGWFormaPago_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = System2012.SystemUtils.RecordManagerCommonList.GetFormaPago("S");
        }

        private void BGWFormaPago_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.cmdFormaPago.Properties.DataSource = e.Result;
            if (!this.BGWMoneda.IsBusy)
            {
                this.BGWMoneda.RunWorkerAsync();
                cmdFormaPago.EditValue = 8;
            }
        }

        private void BGWMoneda_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = System2012.SystemUtils.RecordManagerCommonList.GetMoneda();
        }

        private void BGWMoneda_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.cmbMoneda.Properties.DataSource = e.Result;
            if (!this.BGWBanco.IsBusy)
            {
                cmbMoneda.EditValue = 1;
                this.BGWBanco.RunWorkerAsync();
            }
        }

        private void BGWBanco_DoWork(object sender, DoWorkEventArgs e)
        {
            ECaja objC = new ECaja();
            objC.Condicion = "";
            e.Result = System2012.SystemUtils.RecordmanagerCaja.GetListaCaja(objC);
        }

        private void BGWBanco_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.cmbBanco.Properties.DataSource = e.Result;
            if (!this.BGWTarjetaCredito.IsBusy)
            {
                this.BGWTarjetaCredito.RunWorkerAsync();
            }
        }

        private void cmdFormaPago_EditValueChanged(object sender, EventArgs e)
        {
            this.HabilitarFP();
        }

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            this.IndexPag = e.FocusedRowHandle;
        }

        private void txtImporteCobrar_TextChanged(object sender, EventArgs e)
        {
            this.getAmortizacionMov();
        }

        private void txtImporteRecibido_TextChanged(object sender, EventArgs e)
        {
            this.getImporteVuelto();
        }

        private void txtImporteRecibido_EditValueChanged(object sender, EventArgs e)
        {
        }

        private void BGWTarjetaCredito_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = System2012.SystemUtils.RecordManagerCommonList.GetTarjetaCredito();
        }

        private void BGWTarjetaCredito_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.cmbTarjeta.Properties.DataSource = e.Result;
        }

        private void txtImporteRecibido_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                if (this.validaPagos() == true)
                {
                    if (this.txtImporteCobrar.Text != string.Empty)
                    {
                        if (this.validacionescajas() == true)
                        {
                            if (this.ValidaSelects() == true)
                            {
                                this.AddDetallePagos();
                                this.txtImporteCobrar.Text = "0.0";
                                this.txtImporteRecibido.Text = "0.0";
                                this.Totales();
                                if (this.IMPORTE_COBRAR > 0)
                                {
                                    this.cmdFormaPago.Focus();
                                }
                            }
                        }
                    }
                }
            }
        }

        private void txtSerieComprobante_Leave(object sender, EventArgs e)
        {
            string codigo = this.txtSerie.Text;
            while (codigo.Length < 4)
            {
                codigo = string.Format("0{0}", codigo);
            }
            this.txtSerie.Text = codigo;
        }

        private void txtSerieComprobante_Enter(object sender, EventArgs e)
        {
            if (this.txtSerie.Text.Length > 0)
            {
                int codigo = int.Parse(this.txtSerie.Text);
                this.txtSerie.Text = string.Format("{0}", codigo);
            }
        }

        private void txtNroComprobante_Leave(object sender, EventArgs e)
        {
            string codigo = this.txtNroComprobante.Text;
            while (codigo.Length < 7)
            {
                codigo = string.Format("0{0}", codigo);
            }
            this.txtNroComprobante.Text = codigo;
        }

        private void txtNroComprobante_Enter(object sender, EventArgs e)
        {
            if (this.txtNroComprobante.Text.Length > 0)
            {
                int codigo = int.Parse(this.txtNroComprobante.Text);
                this.txtNroComprobante.Text = string.Format("{0}", codigo);
            }
        }
        
        private void txtInicial_Spin(object sender, DevExpress.XtraEditors.Controls.SpinEventArgs e)
        {
            e.Handled = true;
        }

        private void txtCuotas_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                string fact = this.txtCuotas.Text;
                ESistema obj = new ESistema();
                if (fact.Length > 0)
                {
                    StringBuilder cadena = new StringBuilder();
                    cadena.Append("where id_prodcredito=");
                    cadena.Append(fact);
                    obj.Condicion = cadena.ToString();
                    DataTable ofFac = System2012.SystemUtils.RecordManagerCommonList.GetFactCredito(obj);
                    if (ofFac.Rows.Count > 0)
                    {
                        this.txtTasaInteres.Text = ofFac.Rows[0]["taza1"].ToString();
                    }
                }
                else
                {
                    XtraMessageBox.Show(this, "Ingrese el nro de cuotas ", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnGrabar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Grabardatos();
        }

        private void txtidCobrador_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                if (!string.IsNullOrEmpty(this.txtIdCobrador.Text))
                {
                    if (!BGWListPersonal.IsBusy) BGWListPersonal.RunWorkerAsync();
                }
                else
                {
                    SeleccionarVendedor();
                }
            }
        }

        private void txtidCobrador_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                this.SeleccionarVendedor();
            }
        }

        private void BGWListPersonal_DoWork(object sender, DoWorkEventArgs e)
        {
            ESistema obj = new ESistema();
            StringBuilder cadena = new StringBuilder();
            cadena.Append("where id_persona= ");
            cadena.Append("'");
            cadena.Append(txtIdCobrador.Text + "'");
            obj.Condicion = cadena.ToString();
            e.Result = System2012.SystemUtils.RecordManagerCommonList.GetListadoPersonal(obj);
        }

        private void BGWListPersonal_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            DataTable dtbPersonal = (DataTable)e.Result;
            if (dtbPersonal.Rows.Count > 0)
            {
                txtCobrador.Text = dtbPersonal.Rows[0]["fullname_persona"].ToString();
            }
            else
            {
                SeleccionarVendedor();
            }
        }

        private void BGEListCaja_DoWork(object sender, DoWorkEventArgs e)
        {
            ECaja objC = new ECaja();
            objC.Condicion = string.Format("where id_caja = {0}", txtIdCaja.Text);
            e.Result = System2012.SystemUtils.RecordmanagerCaja.GetListaCaja(objC);
        }

        private void BGEListCaja_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            DataTable dtbC = (DataTable)e.Result;
            if (dtbC.Rows.Count > 0)
            {
                txtCaja.Text = dtbC.Rows[0]["nombre"].ToString();
            }
        }

        private void txtIdCaja_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                if (!string.IsNullOrEmpty(this.txtIdCaja.Text))
                {
                    if (!BGEListCaja.IsBusy) BGEListCaja.RunWorkerAsync();
                }
                else
                {
                    //SeleccionarVendedor();
                }
            }
        }

        private void frmVisorVentasCreditos_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5 || (e.Control && e.KeyCode == Keys.S))
            {
                Grabardatos();
            }
            
        }

        private void txtCuotas_KeyUp(object sender, KeyEventArgs e)
        {

        }

        private void txtCuotasPago_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void cmbTipDoc_EditValueChanged(object sender, EventArgs e)
        {
            getPlantilla();
        }

        private void cmbTipDoc_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Left || e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
            {
                getPlantilla();
            }
        }

        private void txtSerie_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                getCorrelativo();
            }
        }

        private void txtNroComprobante_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                getCorrelativo();
            }
        }

        private void cmbTipDoc_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                getCorrelativo();
            }
        }

        private void tabbedControlGroup1_SelectedPageChanged(object sender, DevExpress.XtraLayout.LayoutTabPageChangedEventArgs e)
        {
            //MessageBox.Show("SelectedPageChanged");
            if (e.Page == ctrlGrpCuotas)
            {
                
                this.txtInicial.Focus();
            }
        }

        private void frmVisorVentasCreditos_Shown(object sender, EventArgs e)
        {
            if (int.Parse(this.getTipventa.ToString()) == 9)//venta al creito
            {
                op_tip_venta = 1;
                txtInicial.Focus();
            }
            else
            {
                this.txtIdCaja.Focus();
            }
        }

        private void txtIdCtacobrar_KeyPress(object sender, KeyPressEventArgs e)
        {

        }

        private void txtIdCtacobrar_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                Listados.frmListAnticipos f = new Listados.frmListAnticipos(this.DataCli);
                f.ShowDialog();
                if (f.TOT_ANTICIPO != null && f.ID_CREDITO!=null && f.ID_SUCURSAL!=null)
                {
                    if (f.op_ok == 1)
                    {
                        txtImpAnticipo.Text = string.Format("{0}", f.TOT_ANTICIPO);
                        txtIdCtacobrar.Text = string.Format("{0}{1}", f.ID_CREDITO, f.ID_SUCURSAL);
                        ID_CREDITO = f.ID_CREDITO;
                        ID_SUCURSAL = f.ID_SUCURSAL;
                        Anticipos(1);
                    }
                }
            }
        }

        private void txtImpAnticipo_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            
          
            if (int.Parse(this.getTipventa.ToString())!= 9)//venta al creito
            {
                op_anticipo = 1;
                txtIdAdelanto.Text = "";
                txtImpAnticipo.Text = "";
                ID_SUCURSAL = null;
                ID_CREDITO = null;
                txtIdCtacobrar.Text = "";
                txtImporteCobrar.Text = "0";
                lblImporteCobrar.Text = this.TOTAL_VENTA.ToString();
            }
        }

        private void txtIdAdelanto_KeyUp(object sender, KeyEventArgs e)
        {
            SeleccionarAnticipo(2);
        }

        private void txtMontoAdelanto_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (int.Parse(this.getTipventa.ToString()) == 9)//venta al creito
            {
                op_anticipo = 1;
                txtIdAdelanto.Text = "";
                ID_SUCURSAL = null;
                ID_CREDITO = null;
                txtIdCtacobrar.Text = "";
                txtMontoAdelanto.Text = "0";
               lblImporteCobrar.Text = this.TOTAL_CREDITO.ToString();
            }
        }
    }
}